package com.jian.java;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.io.IOUtils;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;

/**
 * @author Jiange
 * @create 2021-04-08-15:50
 */
public class MyFileDownLoad extends HttpServlet {
    /**
     * 文件的下载： c s r
     *  浏览器发送请求告诉服务器要下载什么文件 获取要下载的文件名 读取要加载的文件 把文件回传给客户端
     *  在回传前 通过响应头告诉客户端返回的数据类型 告诉客户端收到的数据是用于下载使用（使用响应头）
     */
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取下载的文件名
        //获取要下载的文件的内容
//        BeanUtils.populate(jian,req.getParameterMap());
        ServletContext servletContext = getServletContext();

        String mimeType = servletContext.getMimeType("/WEB-INF/file/1.jpg");
        System.out.println(mimeType);

        resp.setContentType(mimeType);
        //.setHeader("content-disposition 表示收到的数据怎么处理 attachment表示附件表示下载 filename表示下载的文件的文件名
        resp.setHeader("content-disposition","attachment;filename="+URLEncoder.encode("建哥.jpg","utf-8"));

        InputStream resourceAsStream = servletContext.getResourceAsStream("/WEB-INF/file/1.jpg");
        ServletOutputStream outputStream = resp.getOutputStream();
        IOUtils.copy(resourceAsStream,outputStream);
        IOUtils.close();
        resourceAsStream.close();
        outputStream.close();

    }
}
